<?php

class Paciente_Model extends CI_Model
{
    function __construct()
    {
        parent::__construct();
    }

    function getPacientes()
    {
        $sql = $this->db->query('
            ');
        
        $data = array();
        
        if($sql->num_rows > 0){
            foreach($sql->result() as $fila){
                $data[] = $fila;
            }
        }
        
        return $data;
    }
    
    
    function buscarPacientePorCodigo($codigo){
        $cond1 = " and pa.codigo = '$codigo'";
    
        $sql = $this->db->query("
            select
            pe.Persona Persona,
            pe.Nombres Nombres,
            pe.Apellido_Paterno Apellido_Paterno,
            pe.Apellido_Materno Apellido_Materno
            from persona pe, paciente pa
            where pe.persona = pa.persona
            $cond1;");
       
        return $sql->result_array();

    }
    
    function buscarPacientes($doc,$nombre, $apePat, $apeMat, $cod, $flagnn){
        
//        echo $flagnn;
        
//        $condicion="and pa.NN = $flagnn";
        $condicion="";
        
        $cond4=""; $cond1=""; $cond2=""; $cond3=""; $cond5="";
        if ($doc!=""){
            $cond1=" and pe.CodigoDocumento like '%$doc%'";
            
        }
        if ($cod != ""){
            $cond2 = "and pa.Codigo like '%$cod%'";
        }
            if ($nombre != ""){
                $cond3 = "and pe.Nombres like '%$nombre%'";
            }
            if ($apePat != ""){
                $cond4 = "and pe.Apellido_Paterno like '%$apePat%'";
            }
            if ($apeMat != ""){
                $cond5 = "and pe.Apellido_Materno like '%$apeMat%'";
            }

        $sql = $this->db->query("
            select
            pa.Codigo Codigo,
            pe.Persona Persona,
            pe.Nombres Nombres,
            pe.Apellido_Paterno Apellido_Paterno,
            pe.Apellido_Materno Apellido_Materno,
            pe.CodigoDocumento Numero_Documento
            from paciente pa, persona pe
            where pa.Persona = pe.Persona $condicion
            $cond1 $cond2 $cond3 $cond4 $cond5 ;");
        return $sql->result_array();
        
       
    }
    
    function getHistorial($persona,$movil=NULL){
        
        $this->load->model("Historiaclinica_Model");
        
        $sql1 = $this->db->query("select pe.TipoDocumento tipodoc from persona pe where pe.persona = $persona;");
        $varaux = $sql1->result_array();
        if ($varaux[0]['tipodoc']!=NULL){ $condicion=" and pe.TipoDocumento = td.TipoDocumento ";}
        else {$condicion = "";}
        
        
        $sql = $this->db->query("
            select
                pa.Codigo Codigo,
                pa.NN pacNN,
                pe.Persona Persona,
                pe.Nombres Nombres,
                pe.Apellido_Paterno Apellido_Paterno,
                pe.Apellido_Materno Apellido_Materno,
                pe.EMail Email,
                pe.TipoDocumento Tipo_Documento,
                DATE_FORMAT(pe.FechaNacimiento, '%d-%m-%Y') fechanac,
                td.Descripcion Tipo_Doc_Desc,                
                pe.Sexo Sexo,
                pe.Direccion Direccion, 
                pe.Telefono Telefono,
                pe.Celular Celular,
                pe.CodigoDocumento Numero_Documento,
                h.Ocupacion Ocupacion,
                h.LugarTrabajo LugarTrabajo,
                h.AccidentesTrabajo AccidentesTrabajo,
                h.Discapacidad Discapacidad,
                h.MedicamentosUltimosMeses MedicamentosUltimosMeses,
                h.Alergias Alergias,
                h.Fuma Fuma,
                h.Bebe Bebe,
                h.Enfermedades Enfermedades
            from
                historiaclinica h,
                persona pe,
                paciente pa,
                tipodocumento td
            where
                pe.Persona = h.Persona $condicion and
                pa.Persona = pa.Persona and
                h.Persona = $persona;");
        
        $data = array();
        
        if($sql->num_rows > 0){
            foreach($sql->result_array() as $row){
                while (list($key, $value) = each($row)) {
                    $data[$key] = $value;
                }
                if(!is_null($movil)){
                    $data['consultas'] = $this->Historiaclinica_Model->HistorialConsultas($persona);
                    $data['examenes'] = $this->Historiaclinica_Model->HistorialExamenes($persona);
                    $data['internamientos'] = $this->Historiaclinica_Model->HistorialInternamientos($persona);
                    $data['emergencias'] = $this->Historiaclinica_Model->HistorialEmergencias($persona);
                    $data['cirugias'] = $this->Historiaclinica_Model->HistorialCirugias($persona);
                }
                $data['fichafisica']=$this->Historiaclinica_Model->HistorialFichaFisica($persona);
            }
        }
                
        return $data;
    }
    
    public function buscarPaciente($Documento,$nombre,$apePat,$apeMat){
        $cad="select pe.Persona as cod, pe.CodigoDocumento as doc, pe.Nombres as nom, pe.Apellido_Paterno as pat, pe.Apellido_Materno as mat 
      from persona pe, paciente pa  
      where pe.persona=pa.persona ";

        if ($Documento != ''){
            $cond1 = " and CodigoDocumento like '%$Documento%'";
        }else{
            $cond1 = "";
        }
        if ($nombre != ''){
            $cond2 = " and Nombres like '%$nombre%'";
        }else{
            $cond2 = "";
        }
        
        if ($apePat != ''){
            $cond3 = " and Apellido_Paterno like '%$apePat%'";
        }else{
            $cond3 = "";
        }
         if ($apeMat != ''){
            $cond3 = " and Apellido_Materno  like '%$apeMat%'";
        }else{
            $cond3 = "";
        }
        $cad=$cad.$cond1.$cond2.$cond3;
        $sql = $this->db->query($cad);
        
        $row=$sql->result_array();
          
       return $row;
        
    }
    public function insert($args){
        

        $fe=strtotime($args['FechaNac']);
        $fecha= date('Y-m-d', $fe);
//        echo "fecha trasnformada = ".$fecha;
        if(($args['Tipo_Documento'])==0){ $tipodoc = NULL;}
        else{$tipodoc =$args['Tipo_Documento'];}   
//        echo "TIPODOC- ".$tipodoc;
        
        $data = array(
            'Nombres' => $args['Nombres'],
            'Apellido_Paterno' => $args['Apellido_Paterno'],
            'Apellido_Materno' => $args['Apellido_Materno'],
//            'TipoDocumento' => $args['Tipo_Documento'],
            'TipoDocumento' =>$tipodoc,
            'CodigoDocumento' => $args['Numero_Documento'], 
            'Sexo'=> $args['Sexo'],
            'Direccion'=>$args['Direccion'],
            'Telefono'=>$args['Telefono'],
            'Celular'=>$args['Celular'],
            'EMail'=>$args['Email'],
            'FechaNacimiento'=> $fecha
        );
        $this->db->insert('persona', $data);
        
        $lastId=$this->db->insert_id();
        $data = array(
            'Persona' => $lastId,
            'Codigo' => "PAC".$lastId,
            'EstadoPaciente' => 1,
            'TieneHistoria' => 0,
            'NN'=>$args['NN']
        );
        $this->db->insert('paciente', $data);
        
        $data = array(
            'Persona' => $lastId,
            'Ocupacion' => $args['Ocupacion'],
            'LugarTrabajo' => $args['LugarTrabajo'],
            'AccidentesTrabajo' => $args['AccidentesTrabajo'],
            'Discapacidad' => $args['Discapacidad'],
            'MedicamentosUltimosMeses' => $args['MedicamentosUltimosMeses'],
            'Alergias' => $args['Alergias'],
            'Fuma' => $args['Fuma'],
            'Bebe' => $args['Bebe'],
            'Enfermedades' => $args['Enfermedades']
        );
        $this->db->insert('historiaclinica', $data);
        
        return $this->getHistorial($lastId);
    }
    public function cargaTipoDocs(){
        $enviado=array(array());
        $i=1;
        $sql = $this->db->query("
            select
            tipoDocumento tipodoc,
            descripcion desctipodoc
            from tipodocumento ;");
       $enviado1= $sql -> result_array();
       $enviado [0]['value']=0;
       $enviado [0]['label']="Seleccione un tipo";
       
        foreach ($enviado1 as $data){
           $enviado [$i]['value']=$data['tipodoc'];
           $enviado [$i]['label']=$data['desctipodoc'];
           $i++;
       }
      // print_r( $enviado);   
        return $enviado;
        
    }
        
    function buscarPacientesHospitalizados(){
               
        $sql = $this->db->query("
            select
            pa.Codigo Codigo,
            pe.Persona Persona,
            pe.Nombres Nombres,
            pe.Apellido_Paterno Apellido_Paterno,
            pe.Apellido_Materno Apellido_Materno,
            pe.Direccion Direccion,
            pe.Telefono Telefono 
            from paciente pa, persona pe 
            where pa.Persona = pe.Persona and pa.estadopaciente=20
            ;");
       
          $row=$sql->result_array();
          
       return $row;
    }   
    
    function buscarPacientesCirugia(){
               
        $sql = $this->db->query("
            select
            pa.Codigo Codigo,
            pe.Persona Persona,
            pe.Nombres Nombres,
            pe.Apellido_Paterno Apellido_Paterno,
            pe.Apellido_Materno Apellido_Materno,
            pe.Direccion Direccion,
            pe.Telefono Telefono 
            from paciente pa, persona pe 
            where pa.Persona = pe.Persona and pa.estadopaciente=21
            ;");
       
          $row=$sql->result_array();
          
       return $row;
    }   
    
    public function actualizarEstado($datos,$paciente){

         $this->db->where('Persona', $paciente);
         $this->db->update('paciente', $datos); 
       
        return;
    }

    public function sacarelacion($idpaciente,$idpariente){

        $sql = $this->db->query(" select p.tipoparentesco tipoparent
        from parentesco p
        where (p.Paciente1= $idpaciente and p.Paciente2 = $idpariente) or (p.Paciente1= $idpariente and p.Paciente2 = $idpaciente)
        ;");
        
        $row=$sql->result_array();
        
        if ($row==null)
            {
            $row[0]['idtipo']=-1;
            $row[0]['desctipo']='No hay relación'; return $row;
            }
        
        else 
            {
            $sql2 = $this->db->query("SELECT TipoParentesco idtipo, Tipo desctipo FROM `tipoparentesco` where TipoParentesco = 3");
            $row=$sql2->result_array();
            return $row;
            }
            
        
    }
    
    
        public function getRelaciones(){
		$sql = $this->db->query('
			select
				TipoParentesco IDParent,
                                Tipo Descripcion
			from tipoparentesco;');

		return $sql->result_array();;
    }
    
        function insertarParentesco($idRelacion, $idPac1, $idPac2){
        
        $sql="insert into parentesco (Paciente1, Paciente2, TipoParentesco) 
              values ($idPac1, $idPac2, $idRelacion)";
        $this->db->query($sql);

    }
    
    function obtenerCodPersona($proc){
     
        
        $sql = $this->db->query("
            select * from procedimiento 
            where procedimiento=$proc;");
       
        $row=$sql->result_array();
        return $row[0];
       
    }
    
    
    
    
    function buscarParaServicioAmbulancia($codigoPaciente, $nombrePaciente)
    {
        $consulta = "SELECT\n
            PE.persona id_Persona\n
            ,PA.codigo codigo_Paciente\n
            , CONCAT(PE.Nombres, ' ', PE.Apellido_Paterno, ' ', PE.Apellido_Materno ) nombre_Persona\n
            , PE.telefono telefono_Persona\n
            , PE.direccion direccion_Persona\n
            from paciente PA, persona PE\n
            WHERE PA.Persona = PE.Persona";
        if ($codigoPaciente != "" || $codigoPaciente != NULL) $consulta .= " AND codigo_Paciente LIKE '%$codigoPaciente%'";
        if ($nombrePaciente != "" || $nombrePaciente != NULL) $consulta .= " AND nombre_Persona LIKE '%$nombrePaciente%'";
        return $this->db->query($consulta)->result_array();
    }
    
    public function nuevoDeceso($datos,$persona){
        
        return $this->db->insert('morgue', $datos);
        
    }
}

?>